/*
 * Stats.hpp
 *
 *  Created on: Aug 26, 2013
 *      Author: jason
 */

#ifndef STATS_HPP_
#define STATS_HPP_

class Stats {
public:
	Stats();
	~Stats();

	void takeDamage(int X);
	void heal(int x);
	void addAttack(int X) {attack += X;}
	void addDefense(int X) {defense += X;}
	void addMagic(int X)  {magic += X;}
	void addAgility(int X) {agility += X;}
	void addMove(int X) {move += X;}
	void addHP(int X) {hp += X;}
	void addMP(int X) {mp += X;}
	bool isFlying() {return flying;}
	bool isAlive() {return alive;}
	int getAttack()  {return attack;}
	int getDefense() {return defense;}
	int getMagic()   {return magic;}
	int getAgility() {return agility;}
	int getMove()    {return move;}
	int getHP()      {return hp;}
	int getMP()      {return mp;}

	enum Elements {Physical, Fire, Ice, Wind, Elec, Light, Dark};
	enum MovAilment {Sleep = 0x01, Paralyzed = 0x02, Frozen = 0x04, Slow = 0x08};
	enum ControlAilment {Confused = 0x01, Cursed = 0x02, Charmed = 0x04};
	enum OtherAilment {Illusion = 0x01, Silent = 0x04};
	enum Buff {Support = 0x01, Resist = 0x02, Attack = 0x04};
	enum StatIntense {Stat_Lesser, Stat_Norm, Stat_Moderate, Stat_Extreme};
private:
	// data types
	bool flying;
	bool alive;
	int attack;
	int defense;
	int magic;
	int agility;
	int move;
	int hp;
	int maxHP;
	int mp;
	int maxMP;
}; // class Stats

#endif /* STATS_HPP_ */
